import { login } from '@/api/login'
export default {
  namespaced: true,
  state: {
    userInfo: null,
    token: null,
  },
  mutations: {
    /**
     * 用户登录成功，保存用户状态数据
     * @param {*} state
     * @param {*} payload
     */
    LOGIN_SUCCESS(state, payload) {
      state.userInfo = payload.userInfo
      state.token = payload.token
    },
    /**
     * 用户退出时重置用户状态数据
     * @param {*} state
     */
    USER_RESET(state) {
      state.userInfo = null
      state.token = null
    },
  },
  actions: {
    /**
     * 异步用户登录，更新状态数据
     * @param {*} store
     * @param {*} payload {username, password}
     */
    loginAsync(store, payload) {
      return login(payload)
        .then(data => {
          // 用户登录成功，提交 mutation 来更新状态数据
          // 注意：在 action 中不能直接更新状态
          store.commit('LOGIN_SUCCESS', data)
        })
    },
  },
}
